package com.uchedao.vehicledetection.model;

import android.text.TextUtils;

import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.nostra13.universalimageloader.utils.L;
import com.uchedao.vehicledetection.R;
import com.uchedao.vehicledetection.global.GlobalInfo;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;

/**
 * 草稿箱数据
 *
 * @author "叶晋"
 *
 */
public class Draft {
	public static final int TYPE_BASE_INFO = 0;// 基础信息
	public static final int TYPE_CONDITION = 1;// 综合检测
	public static final int TYPE_ACCIDENT = 2;// 事故勘察
	public static final int TYPE_PHOTO = 3;// 上传照片
	public static final int TYPE_DIP = 4;// 浸泡检测
	public static final int TYPE_FIRE = 5;// 失火检测

	public static final int STATUE_NONE = 0;// 未开始
	public static final int STATUE_START = 1;// 进行中
	public static final int STATUE_FINISH = 2;// 已完成

	@Expose
	@SerializedName("car_plate")
	public String car_plate;// 检测车辆车牌号

	@Expose
	@SerializedName("car_vin")
	public String car_vin;// 车辆vin码

	@Expose
	@SerializedName("info_number")
	public String info_number;// 车源id

	@Expose
	@SerializedName("create_time")
	public String create_time;// 检测时间

	@Expose
	@SerializedName("update_time")
	public String update_time;// 更新时间

	@Expose
	@SerializedName("base_info")
	public BaseInfo base_info = new BaseInfo();// 基础信息
	// public int baseInfoStatus;// 基础信息完成状态 （0未开始，1进行中，2已完成）

	@Expose
	@SerializedName("condition")
	public Condition condition = new Condition();// 综合检测
	// public int conditionStatus;// 综合检测完成状态 （0未开始，1进行中，2已完成）

	@Expose
	@SerializedName("accident")
	public Accident accident = new Accident();// 事故勘察
	// public int accidentStatus;// 事故勘察完成状态 （0未开始，1进行中，2已完成）

	@Expose
	@SerializedName("photo")
	public Photo[] photo = new Photo[31];// 上传照片
	// public int photoStatus;// 上传照片完成状态 （0未开始，1进行中，2已完成）

	// @Expose
	@SerializedName("dip")
	public ResultBoolean[] dip = new ResultBoolean[15];
	// public Dip dip;// 浸泡检测以
	// public int dipStatus;// 浸泡检测完成状态 （0未开始，1进行中，2已完成）

	// @Expose
	@SerializedName("fire")
	public ResultBoolean[] fire = new ResultBoolean[8];// 失火检测
	// public int fireStatus;// 失火检测完成状态 （0未开始，1进行中，2已完成）

	// （0未开始，1进行中，2已完成）

	public int[] status = new int[6];// 各项目完成状态

	public int upload_status = 0;

	public HashMap<String,Boolean> statusChildren = new HashMap();// 各项目完成状态

	@Override
	public String toString() {
		String json = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create().toJson(this);
		try {
			JSONObject obj = new JSONObject(json);
			// obj.remove("create_time");
			// obj.remove("update_time");

			JSONObject baseInfo = (JSONObject) obj.get("base_info");
			JSONObject transferinfo = (JSONObject)baseInfo.get("transfer_info");
			L.e("transfer_info>>>>>>>>>>>>>>", transferinfo.toString());
			// 若自填保险公司名称不为空的话，使用自填的保险公司名称
			if (!TextUtils.isEmpty(base_info.process_info.insurance_company_other)) {
				JSONObject processInfo = (JSONObject) baseInfo.get("process_info");
				processInfo.put("insurance_company", base_info.process_info.insurance_company_other);
			}
			// 若自填车型名称不为空的话，使用自填车型名称
			if (!TextUtils.isEmpty(base_info.use_info.model_custom)) {
				JSONObject useInfo = (JSONObject) baseInfo.get("use_info");
				useInfo.put("model_id", base_info.use_info.model_custom);
			}

			// obj.put("create_time", create_time.substring(0, 4));
			// obj.put("update_time", update_time.substring(0, 4));

			JSONObject dipJson = new JSONObject();
			String[] dipNames = GlobalInfo.resources.getStringArray(R.array.dip_key_entries);
			for (int i = 0; i < dip.length; i++) {
				if (dip[i] != null)
					dipJson.put(dipNames[i], dip[i].result);
			}
			obj.put("dip", dipJson);

			JSONObject fireJson = new JSONObject();
			String[] fireNames = GlobalInfo.resources.getStringArray(R.array.fire_key_entries);
			for (int i = 0; i < fire.length; i++)
				if (fire[i] != null)
					fireJson.put(fireNames[i], fire[i].result);
			obj.put("fire", fireJson);

			// JSONObject photoJson = new JSONObject();
			// String[] photoNames =
			// GlobalInfo.resources.getStringArray(R.array.upload_photo_entries);
			// for (int i = 0; i < photo.length; i++)
			// photoJson.put(photoNames[i], photo[i].pic_id);
			// obj.put("photo", photoJson);

			return obj.toString();
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return "";
	}
}
